Skip to content

Conversation

@MacDue
Copy link
Member

@MacDue MacDue commented Oct 7, 2025

This patch refactors the SVE prologue and epilogue to use a common code path for both the "Default" and "Split" SVE layouts.

This also factors some code into common helpers, such as:

  • partitionSVECS() (which returns the MI ranges of the PPR/ZPR callee-saves)
  • getSVEStackFrameSizes() (which returns the sizes of the PPR/ZPR locals/callee-saves)

Since most split-SVE layout code is now shared with the default path, there should be much less code that is only tested when split-SVE is enabled.

This patch was prepared in a number of small steps (that should build alone). I've kept these as commits in the PR, as it may help with review.

@MacDue MacDue merged commit 74acfb2 into llvm:main Oct 9, 2025
9 checks passed
@MacDue MacDue deleted the tidy_sve branch October 9, 2025 08:01
svkeerthy pushed a commit that referenced this pull request Oct 9, 2025
…s (NFCI) (#162253)

This patch refactors the SVE prologue and epilogue to use a common code
path for both the "Default" and "Split" SVE layouts.

This also factors some code into common helpers, such as:
- `partitionSVECS()` (which returns the MI ranges of the PPR/ZPR
   callee-saves)
- `getSVEStackFrameSizes()` (which returns the sizes of the PPR/ZPR
   locals/callee-saves)

Since most split-SVE layout code is now shared with the default path,
there should be much less code that is only tested when split-SVE is
enabled.
clingfei pushed a commit to clingfei/llvm-project that referenced this pull request Oct 10, 2025
…s (NFCI) (llvm#162253)

This patch refactors the SVE prologue and epilogue to use a common code
path for both the "Default" and "Split" SVE layouts.

This also factors some code into common helpers, such as:
- `partitionSVECS()` (which returns the MI ranges of the PPR/ZPR
   callee-saves)
- `getSVEStackFrameSizes()` (which returns the sizes of the PPR/ZPR
   locals/callee-saves)

Since most split-SVE layout code is now shared with the default path,
there should be much less code that is only tested when split-SVE is
enabled.
DharuniRAcharya pushed a commit to DharuniRAcharya/llvm-project that referenced this pull request Oct 13, 2025
…s (NFCI) (llvm#162253)

This patch refactors the SVE prologue and epilogue to use a common code
path for both the "Default" and "Split" SVE layouts.

This also factors some code into common helpers, such as:
- `partitionSVECS()` (which returns the MI ranges of the PPR/ZPR
   callee-saves)
- `getSVEStackFrameSizes()` (which returns the sizes of the PPR/ZPR
   locals/callee-saves)

Since most split-SVE layout code is now shared with the default path,
there should be much less code that is only tested when split-SVE is
enabled.
akadutta pushed a commit to akadutta/llvm-project that referenced this pull request Oct 14, 2025
…s (NFCI) (llvm#162253)

This patch refactors the SVE prologue and epilogue to use a common code
path for both the "Default" and "Split" SVE layouts.

This also factors some code into common helpers, such as:
- `partitionSVECS()` (which returns the MI ranges of the PPR/ZPR
   callee-saves)
- `getSVEStackFrameSizes()` (which returns the sizes of the PPR/ZPR
   locals/callee-saves)

Since most split-SVE layout code is now shared with the default path,
there should be much less code that is only tested when split-SVE is
enabled.
MacDue added a commit to MacDue/llvm-project that referenced this pull request Oct 16, 2025
This was left out of the original patch (llvm#142392) to simplify the initial
implementation. However, after refactoring the SVE prologue/epilogue code
in llvm#162253, it's not much of an extension to support this case.

The main change here is when restoring the SP from the FP for the SVE
restores, we may need an additional frame offset to move from the start
of the ZPR callee-saves to the start of the PPR callee-saves.

This patch also fixes a previously latent bug where we'd add the
`RealignmentPadding` when allocating the PPR locals, then again for the
ZPR locals. This was unnecessary as the stack only needs to be realigned
after all SVE allocations.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants